import axios from "axios";
import NProgress from "nprogress";
import "nprogress/nprogress.css";

NProgress.inc(0.4);
NProgress.configure({ easing: "ease", speed: 1000, showSpinner: false });
export function request(config) {
  // 实例配置
  // 等后端确认后会进行创建
  const instance = axios.create({
    timeout: 5000
  });

  // 请求拦截
  instance.interceptors.request.use(
    config => {
      // 1.比如对config中的一些信息不符合服务器的要求
      // 2.比如每次发送网络请求时，都希望在界面中显示一个请求的图标
      // 3.某些网络请求（比如登录(token))，必须携带一些特殊的信息
      console.log(config.url + "请求拦截的数据为：");
      console.log(config);
      if (config.method === "get"||config.method === "post") {
        NProgress.start();
      }
      return config;
    },
    err => {
      console.error(err);
      return err;
    }
  );

  // 响应拦截
  instance.interceptors.response.use(
    res => {
      NProgress.done();
      console.log(config.url + "响应的result数据为：");
      console.log(res);
      return res.data;
    },
    err => {
      console.error(err);
      return err;
    }
  );

  // 返回实例
  return instance(config);
}
